package gruppoSoluzione.mainService;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * Un componente dedicato alla gestione delle date usate nel Database.
 * 
 * @author Alessandro Martinelli
 */
public class ServiceDate implements Comparable<ServiceDate>{

	private static SimpleDateFormat format=new SimpleDateFormat("ddMMyy");
	private String date;

	public ServiceDate(String date){
		this.date=date;
	}
	
	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}
	
	@Override
	public int compareTo(ServiceDate otherDate) {
		return date.compareTo(otherDate.date);
	}

	/**
	 * Create una ServiceDate a partire da una Data Java
	 * @param date
	 * @return
	 */
	public static ServiceDate fromDate(Date date){
		return new ServiceDate(format.format(date));
	}
	
	/**
	 * Create una ServiceDate dal nome di uno dei file del database
	 * @param date
	 * @return
	 */
	public static ServiceDate fromFileName(String filename) throws ParseException{
		try {
			return new ServiceDate(filename.substring(6,12));
		} catch (IndexOutOfBoundsException exception) {
			throw new ParseException(filename+" is not a correct filename",0);
		}
	}
	
	/** Elabora il nome del file del database associato a questa data
	 */
	public String filename(){
		return "eventi"+date+".xml";
	}
	
	/**
	 * Crea una java.util.Date equivalente a questa ServiceDate
	 */
	public Date getAsDate(){
		try {
			return format.parse(date);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return (Calendar.getInstance()).getTime();
	}
	
	
}
